#ifndef _CANARY2_CORO_TASK_CONCEPTS_H_
#define _CANARY2_CORO_TASK_CONCEPTS_H_

#include <concepts>
#include "../sys/resumable.h"

namespace wilson::coro
{
    template<typename T>
    concept as_task = requires (T t)
    {
        typename T::value_type;
        typename T::promise_type;

        t.get();
        t.resume();
        ::std::move(t).operator sys::resumable();
    };
}

#endif
